perm filename OBSDIA.SAI[DIA,HPM] blob sn#507029 filedate 1980-05-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "OBSDIA"
C00005 ENDMK
C⊗;
BEGIN "OBSDIA"
comment  diagrams for obstacle avoider chapter;
REQUIRE "TYPHDR.SAI[GOD,HPM]" SOURCE_FILE;
INTEGER FJ;
   BEGIN "figure 8-1"
   REAL RA,RB;

   PROCEDURE ARROW(REAL X1,Y1,X2,Y2);
      BEGIN
      REAL DX,DY,D; REAL ARRAY HEADX,HEADY[1:3];
      LINE(X1,Y1,X2,Y2,3); DX←X2-X1; DY←Y2-Y1; D←SQRT(DX↑2+DY↑2);
      DX←0.2*DX/D; DY←0.2*DY/D;
      HEADX[1]←X2; HEADY[1]←Y2;
      HEADX[2]←X2-DX-DY/4;  HEADY[2]←Y2-DY+DX/4;
      HEADX[3]←X2-DX+DY/4;  HEADY[3]←Y2-DY-DX/4;
      POLYGO(3,HEADX[1],HEADY[1]);
      END;

   FJ←FILJOB("DSK:8-1.GOD[DIA,HPM]");

   DDINIT; SCREEN(0,0,6,4);

   FNTSELECT(1,"NONM"); comment Main text font;
   FNTSELECT(2,"METMBM"); comment math font.;
   FNTSELECT(3,"METSBM"); comment Small math font for sub-superscripts.;
   FNTSELECT(4,"GRKL40"); comment Big greek, for use with math font.;
   FNTSELECT(5,"GRKL30"); comment Medium greek, for use with math font.;
   FNTSELECT(6,"BDR40"); comment Source of large bars, brackets, parens, R.;

   DEFINE XA="1.8", YA="1.8", RAM="1.5", XB="4.5", YB="2.5", RBM="0.5", TH=".1";
   
   LITEN; ELLIPS(XA-RAM,YA-RAM,XA+RAM,YA+RAM);
   DRKEN; ELLIPS(XA-RAM+TH,YA-RAM+TH,XA+RAM-TH,YA+RAM-TH);
   LITEN; ELLIPS(XB-RBM,YB-RBM,XB+RBM,YB+RBM);
   DRKEN; ELLIPS(XB-RBM+TH,YB-RBM+TH,XB+RBM-TH,YB+RBM-TH);
   LITEN;
   FNTPOS(XA,YA); DEPOSIT(0,0,CENTER(JTXT(6,"A")));
   FNTPOS(XB,YB); DEPOSIT(0,0,CENTER(JTXT(6,"B")));

   FOR RA←RAM,-RAM DO FOR RB←RBM,-RBM DO
      BEGIN
      REAL DX,DY,D2,D,A,B,IX,IY,JX,JY,PAR,PER,DISTIJ;
      DX←XB-XA; DY←YB-YA; D2←DX*DX+DY*DY; D←SQRT(D2); DX←DX/D; DY←DY/D;
      A←(RA-RB)/D;
      B←SQRT(1-A*A); DISTIJ←D*B;    PAR←DX*A+DY*B; PER←DY*A-DX*B;
      IX←XA+RA*PAR;  IY←YA+RA*PER;   JX←XB+RB*PAR;  JY←YB+RB*PER;
      LINE(IX,IY,JX,JY,5);
      ARROW(IX,IY,(IX+JX)/2,(IY+JY)/2);
      END;

   DPYUP(-1);
   KILJOB(FJ);

   END;
END;